package main
import (
"context"
"fmt"
"log"
"net/http"
"github.com/0xsequence/go-sequence/indexer"
"github.com/0xsequence/go-sequence/lib/prototyp"
)
const indexerToken = "AQAAAAAAAF_JvPALhBthL7VGn6jV0YDqaFY"
func main() {
ctx := context.TODO()
seqIndexerGW := indexer.NewIndexerGatewayClient(
"https://indexer.sequence.app",
http.DefaultClient,
)
authCtx, err := indexer.WithHTTPRequestHeaders(ctx, http.Header{
"X-Access-Key": []string{indexerToken},
})
if err != nil {
log.Fatal(err)
}
accountAddress := prototyp.HashFromString("0xd8da6bf26964af9d7eed9e03e53415d37aa96045")
contractAddresses := []prototyp.Hash{
prototyp.HashFromString("0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"), // USDC on Ethereum
prototyp.HashFromString("0x3c499c542cef5e3811e1192ce70d8cc03d5c3359"), // USDC on Polygon
prototyp.HashFromString("0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d"), // USDC on BSC
}
_, balances, err := seqIndexerGW.GetTokenBalancesByContract(
authCtx,
nil, // No chainId filter
nil, // No network filter
&indexer.TokenBalancesByContractFilter{
AccountAddresses: []prototyp.Hash{accountAddress},
ContractAddresses: contractAddresses,
},
nil, // Default omitMetadata
nil, // Default page
)
if err != nil {
log.Fatal(err)
}
// Token Balances
for _, balance := range balances {
fmt.Printf("chainId: %d\n", balance.ChainID)
for _, result := range balance.Results {
fmt.Printf("\tcontractAddress: %s, balance: %s\n",
result.ContractAddress, result.Balance)
}
}
}